<html>
  <head>
    <title>使用错误代码</title>
  </head>
  <body>
    <script>
      /*
                    五、使用错误代码 ErrorCode

                                 UserFriendlyException很好，但是在高级用法中有一些问题：
                                    
                                    1、它要求你在任何地方注入字符串本地化器，并在抛出异常时始终使用它

                                    2、但是，在某些情况下，可能无法注入字符串本地化器（在静态上下文或实体方法中）。

                                 你可以使用错误代码分隔进程，而不是在抛出异常时本地化消息。

                                 首先，在模块配置中定义code-namesspace到本地化资源的 "映射"：
                                    
                                        services.Configure<AbpExceptionLocalizationOptions>(options =>
                                        {
                                            options.MapCodeNamespace("Volo.Qa", typeof(QaResource));
                                        });

                                然后，Volo.Qa命名空间的任何异常都将使用其给定的本地化资源进行本地化。
                                本地化资源应始终具有带有错误代码键的条目。
                                示例：
                                        {
                                            "culture": "en",
                                            "texts": {
                                                "Volo.Qa:010002": "You can not vote your own answer!"
                                            }
                                        }


                                然后可以使用错误代码抛出业务异常：

                                            throw new BusinessException(QaDomainErrorCodes.CanNotVoteYourOwnAnswer);

                                抛出任何实现IHasErrorCode接口的异常行为都是相同的。
                                因此，错误代码本地化方法并不是BusinessException类所独有的。

                                错误消息不需要定义本地化字符串。如果未定义，ABP将向客户端发送默认错误消息。它不使用异常的Message属性！
                                如果需要，请使用UserFriendlyException（或使用实现IUserFriendlyException接口的异常类型）。

                */
    </script>
  </body>
</html>